package com.zfzs.post.modules.post.service;

import com.zfzs.post.modules.post.domain.TerminalInfo;
import com.zfzs.post.modules.post.service.dto.QueryTerminalListDTO;
import com.zfzs.post.modules.post.service.dto.TerminalInfoQueryCriteria;
import com.zfzs.post.page.JpaPageHelper;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * 终端信息
 *
 * @author ck
 * @date 2019-09-27
 */
public interface TerminalInfoService {

    /**
     * queryAll 分页
     *
     * @param criteria
     * @param pageable
     * @return
     */
    Object queryAll(TerminalInfoQueryCriteria criteria, Pageable pageable);

    /**
     * queryAll 不分页
     *
     * @param criteria
     * @return
     */
    Object queryAll(TerminalInfoQueryCriteria criteria);

    /**
     * findById
     *
     * @param id
     * @return
     */
    TerminalInfo findById(Long id);

    /**
     * create
     *
     * @param resources
     * @return
     */
    TerminalInfo create(TerminalInfo resources);

    /**
     * update
     *
     * @param resources
     */
    void update(TerminalInfo resources);

    /**
     * delete
     *
     * @param id
     */
    void delete(Long id);

    /**
     * 查询终端列表，分配终端时查询
     * @param dto
     * @return
     */
    List<TerminalInfo> findTerminalList4Distribu(QueryTerminalListDTO dto);

    /**
     * 根据sn查询
     */
    TerminalInfo findBySN(String sn);

    /**
     * 根据终端号查询
     * @param merchantCode
     * @return
     */
    TerminalInfo findByMerchantCode(String merchantCode);

    /**
     * 分页
     * @param criteria
     * @param page
     * @param size
     * @return
     */
    JpaPageHelper findTerminalPageList(TerminalInfoQueryCriteria criteria, Integer page, Integer size);

    /**
     * 更新最终所属
     * @param agentId
     * @param sn
     */
    void updateTerminalsAgent(Long agentId,String...sn);

    /**
     * 根据起止查询
     * @param startSn
     * @param endSn
     * @param channelId
     * @return
     */
    List<TerminalInfo> findByStartAndEnd(String startSn, String endSn, Long channelId);

    String getActivationCount(List<Long> ids,String startDate,String endDate,Integer isActivation);

    String getAverageSum(List<Long> ids,String startDate,String endDate,Long channelId);
}